home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / WANDR401.ZIP / sources / READ.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-09-07  |  2.0 KB  |  94 lines

  1. /*           Read.c                         */
  2.  
  3. /*   Functions for reading the screen level */
  4.  
  5.  
  6.  
  7. #include "wand_head.h"
  8.  
  9.  
  10. extern char *edit_screen;
  11. extern char lscreen[NOOFROWS][ROWLEN+1];
  12. extern char screen_name[61];
  13. extern char *screenpath;
  14. extern int edit_mode;
  15.  
  16. char buffer[80];
  17.  
  18. int rscreen(num, maxmoves)
  19. int *maxmoves, num;
  20. {
  21.     int  y, numr;
  22.     FILE *fp;
  23.     char name[100];
  24.     char (*row_ptr)[ROWLEN+1] = lscreen;
  25.  
  26.  /*   if (!edit_mode) */
  27.     sprintf(name,"%s/screen.%d",screenpath,num);
  28. /*    else {
  29.     if (!edit_screen)
  30.         sprintf(name,"./screen");
  31.     else
  32.         sprintf(name,"%s",edit_screen);
  33.     }
  34. */
  35.  
  36.     fp = fopen(name,"r");
  37.     if (fp == NULL) {
  38.         sprintf(buffer,"File for screen %d unavailable.",num);
  39.         alert_message(buffer);
  40.         return -1;
  41.     } else {
  42.     for (y = 0; y < NOOFROWS; y++) {
  43.         fgets(*row_ptr,ROWLEN + 2,fp);
  44.         numr = strlen( *row_ptr ) - 1;
  45.         while (numr < ROWLEN) (*row_ptr)[numr++] = ' ';
  46.         row_ptr++;
  47.     }
  48.     fgets(screen_name,61,fp);
  49.     if (fscanf(fp,"%d",maxmoves) != 1)
  50.         *maxmoves=0;
  51.     fclose(fp);
  52.     }
  53.     return (fp == NULL);
  54. }
  55.  
  56. int wscreen(num, maxmoves)
  57. int maxmoves, num;
  58. {
  59.     int  x, y;
  60.     FILE *fp;
  61.     char name[100];
  62.     char (*row_ptr)[ROWLEN+1] = lscreen;
  63.  
  64.     if (!edit_screen)
  65.     sprintf(name,"./screen");
  66.     else
  67.     sprintf(name,"%s",edit_screen);
  68.     fp = fopen(name,"w");
  69.     if (fp == NULL) {
  70.     sprintf(name,"/tmp/screen.%d",getpid());
  71.     fp = fopen(name,"w");
  72.     sprintf(buffer,"Written file is %s",name);
  73.         notify_message(buffer);
  74.     }
  75.     if (fp == NULL) {
  76.         alert_message("File for screen cannot be written.");
  77.     } else {
  78.     for (y = 0; y < NOOFROWS; y++) {
  79.         for(x = 0; x < ROWLEN; x++)
  80.         fputc(row_ptr[y][x],fp);
  81.         fputc('\n',fp);
  82.     }
  83.     if (*screen_name == '\0')
  84.         fputc('#',fp);
  85.     else
  86.         fputs(screen_name,fp);
  87.     fputc('\n',fp);
  88.     if (maxmoves != 0)
  89.         fprintf(fp,"%d\n",maxmoves);
  90.     fclose(fp);
  91.     }
  92.     return (fp == NULL);
  93. }
  94.